<html>

<head>
<meta charset="utf-8">

<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>新建网页 1</title>
</head>

<body text="#FFFFFF" bgcolor="#000000">

<p>//输入法</p>
<p>&nbsp; 实现输入汉字,字符,符号等</p>
<p>&nbsp; 中断调用:INT $C209</p>
<p>&nbsp; 入口参数:</p>
<p>&nbsp; ①寄存器X放参数表地址低8位</p>
<p>&nbsp;&nbsp;&nbsp; 寄存器Y放参数表地址高8位</p>
<p>&nbsp; ②设置光标类型</p>
<p>&nbsp;&nbsp;&nbsp; 设置地址 $0431</p>
<p>&nbsp;&nbsp;&nbsp; (0431) = 00&nbsp;&nbsp; 闪烁粗光标</p>
<p>&nbsp;&nbsp;&nbsp; 其他自己试试就知道了</p>
<p>&nbsp; ③设置最右下角显示的两个汉字</p>
<p>&nbsp;&nbsp;&nbsp; 设置地址 $053A</p>
<p>&nbsp;&nbsp;&nbsp; (053A) = 00&nbsp; 显示&quot;姓名&quot;</p>
<p>&nbsp;&nbsp;&nbsp; (053A) = 01&nbsp; 显示&quot;备注&quot;</p>
<p>&nbsp;&nbsp;&nbsp; (053A) = 02&nbsp; 显示&quot;课程&quot;</p>
<p>&nbsp;&nbsp;&nbsp; (053A) = 03&nbsp; 显示&quot;便笺&quot;</p>
<p>&nbsp;&nbsp;&nbsp; (053A) = 04&nbsp; 显示&quot;纪念&quot;</p>
<p>&nbsp;&nbsp;&nbsp; (053A) = 05&nbsp; 显示&quot;行程&quot;</p>
<p>&nbsp;&nbsp;&nbsp; (053A) = 06&nbsp; 显示&quot;定时&quot;</p>
<p>&nbsp;&nbsp;&nbsp; (053A) = 07&nbsp; 显示&quot;帐本&quot;</p>
<p>&nbsp;&nbsp;&nbsp; (053A) = 08&nbsp; 显示&quot;储蓄&quot;</p>
<p>&nbsp;&nbsp;&nbsp; (053A) = 09&nbsp; 显示&quot;个人&quot;</p>
<p>&nbsp;&nbsp;&nbsp; (053A) = 0A&nbsp; 显示&quot;邮编&quot;</p>
<p>&nbsp;&nbsp;&nbsp; (053A) = 0B&nbsp; 显示&quot;生字&quot;</p>
<p>&nbsp;&nbsp;&nbsp; (053A) = 0C&nbsp; 显示&quot;中文&quot;</p>
<p>&nbsp;&nbsp;&nbsp; (053A) = 0D&nbsp; 显示&quot;要事&quot;</p>
<p>&nbsp;&nbsp;&nbsp; (053A) = 0E&nbsp; 显示&quot;笔记&quot;</p>
<p>&nbsp;&nbsp;&nbsp; (053A) = 0F&nbsp; 显示&quot;查询&quot;</p>
<p>&nbsp;&nbsp;&nbsp; (053A) = 10&nbsp; 显示&quot;开机&quot;</p>
<p>&nbsp;&nbsp;&nbsp; (053A) = 11&nbsp; 显示&quot;汉英&quot;</p>
<p>&nbsp;&nbsp;&nbsp; .....</p>
<p>&nbsp;&nbsp;&nbsp; 其他自己试试</p>
<p>　</p>
<p>&nbsp;&nbsp;&nbsp; 参数表定义:</p>
<p>&nbsp;&nbsp; 偏移 00: 光标位置 (00-$63)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 01: 允许输入最大字节数</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 02: 20</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 03: 帮助内容开始地址低8位</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 04: 帮助内容开始地址高8位</p>
<p>　</p>
<p>&nbsp;&nbsp;&nbsp; 这里有个问题,用户输入后,如何获得用户输入的信息呢?由于输入的信息会在屏幕上显示</p>
<p>那么我们只要把对应屏幕RAM地址内容保存到另外一段地址就可以了</p>
<p>&nbsp;&nbsp;&nbsp; 我举个例子</p>
<p>&nbsp;&nbsp;&nbsp; 光标位置 00</p>
<p>&nbsp;&nbsp;&nbsp; 最大允许输入20个字符,即10个汉字</p>
<p>&nbsp;&nbsp;&nbsp; 输入的信息保存在地址3000后</p>
<p>&nbsp;&nbsp;&nbsp; 输入的字节数保存在地址3100</p>
<p>&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; 1.我们 先做帮助</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从地址2000开始</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输入法输入 &quot;输入法帮助&quot;,后面用 E C命令紧接输入0000</p>
<p>&nbsp;&nbsp; 2.然后我们做参数表</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从地址2010开始</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; E C 2010,输入 00 14 20 00 20</p>
<p>&nbsp;&nbsp; 3.实现主程序,从地址2018开始</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; A 2018</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 2018: LDA #$00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
;设置光标类型为正常</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 201A: STA $0431</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 201D: LDA #$0C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
;最右下角显示&quot;中文&quot;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 201F: STA $053A</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 2022: INT $8A2E&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
;清屏</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 2025: LDX #$10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
;设置参数表地址</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 2027: LDY #$20</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 2029: INT $C209&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
;调用输入法中断</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 202C: CMP #$1B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
;判断用户是否按 跳出 键</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 202E: BEQ $2041&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
;如果按了,说明用户取消了输入,那么程序结束</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 2030: LDX #$00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
;开始读输入的数据,这里X的内容初始化为00</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 2032: LDA $02C0,X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
;因为光标位置是00,所以从地址02C0开始读,这是屏幕RAM首地址</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 2035: BEQ $203E&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
;判断读取的内容是不是 00,如果是说明信息已经读完了</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 2037: STA $3000,X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
;读取信息送地址 3000+(X)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 203A: INX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
;寄存器X内容加1,读取信息下一字节</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 203B: JMP $2032&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 203E: STX $3100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
;用户输入的字节数送地址3100</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 2041: RTS</p>

</body>

</html>
